/* eslint-disable jsdoc/require-template */
/* eslint-disable unicorn/no-thenable */
/**
 * @typedef {{<T>(resolve: (value?: T | PromiseLike<T>) => void): Promise<void>}} DynamicThenFn
 */
/**
 * @template A
 * @template B
 * @typedef {(<G>() => G extends A & G | G ? 1 : 2) extends (<G>() => G extends B & G | G ? 1 : 2)? true : false} IsEqual
 */

console.log("mod-then-async-iife::");
const foo = "foo";
/**
 * @method
 * @template T
 * @param {(value?: T | PromiseLike<T>) => void} resolve
 * @returns {void}
 */
function thenEvaluating(resolve) {
  console.log("mod-then-async-iife::thenEvaluating::");
  resolve();
}

void (async () => {
  console.log("mod-then-async-iife::async-iife::");
})();

export { foo, thenEvaluating as then };
